Regresión lineal múltiple y regresión logística
2025-11-01
Dataset: fetal_health.csv (UCI CTG). Contexto clínico: interpretación de CTG (normal, sospechoso, patológico).
Defición
Prueba médica que monitoriza simultáneamente la frecuencia cardíaca del feto y la actividad contráctil del útero. Se realiza generalmente durante el tercer trimestre del embarazo y el parto, colocando dos transductores externos (uno para la frecuencia cardíaca fetal y otro para las contracciones) sobre el abdomen de la madre
Generada con Gemini
| Característica (Variable en CSV) | Cálculo o Descripción |
|---|---|
| Parámetros Basales | |
| baseline value | Es la frecuencia cardíaca fetal (FCF) media aproximada en un segmento de 10 minutos, excluyendo aceleraciones, deceleraciones y períodos de variabilidad marcada (>25 lpm). Se redondea a incrementos de 5 latidos por minuto (lpm).[4, 5, 6, 7, 8] El rango normal se considera entre 110 y 160 lpm.[9, 10] |
| fetal_movement | Número de movimientos fetales detectados por segundo.[1, 11, 12] |
| uterine_contractions | Número de contracciones uterinas por segundo. Se considera normal tener 5 o menos contracciones en 10 minutos.[1, 4, 11, 12] |
| Eventos Transitorios (Aceleraciones y Deceleraciones) | |
| accelerations | Número de aceleraciones por segundo. Una aceleración es un aumento abrupto de la FCF por encima de la línea de base de al menos 15 lpm, que dura 15 segundos o más, pero menos de 2 minutos.[5, 9, 10] |
| light_decelerations | Número de deceleraciones leves por segundo. Una deceleración es una caída de la FCF de más de 15 lpm que dura más de 15 segundos.[5] La categoría “leve” se refiere a su duración, típicamente menor a 120 segundos.[3] |
| severe_decelerations | Número de deceleraciones severas por segundo. Se refiere a deceleraciones de larga duración, a menudo definidas como aquellas que superan los 300 segundos.[3] |
| prolongued_decelerations | Número de deceleraciones prolongadas por segundo. Son caídas de la FCF que duran más de 2 o 3 minutos pero menos de 10 minutos.[3, 6, 13] |
| Variabilidad de la FCF | |
| abnormal_short_term_variability | Porcentaje de tiempo en que la variabilidad a corto plazo (latido a latido) es anormal. La variabilidad se considera anormal si es mínima (≤5 lpm) o marcada (>25 lpm).[6, 8] |
| mean_value_of_short_term_variability | Valor medio de la variabilidad a corto plazo (STV), que describe las fluctuaciones de la FCF latido a latido.[3, 6] |
| percentage_of_time_with_abnormal_long_term_variability | Porcentaje de tiempo en que la variabilidad a largo plazo es anormal. Se calcula sobre las fluctuaciones de la FCF en un período de un minuto.[5] |
| mean_value_of_long_term_variability | Valor medio de la variabilidad a largo plazo (LTV), que mide la amplitud (diferencia entre el pico y el valle) de las fluctuaciones de la FCF en un minuto.[3, 5] |
| Características del Histograma de FCF | Estas son propiedades estadísticas calculadas a partir de la distribución de todos los valores de FCF registrados durante el período de monitorización.[1, 11, 12] |
| histogram_width | El ancho del histograma, calculado como la diferencia entre el valor máximo (histogram_max) y el mínimo (histogram_min) de la FCF. |
| histogram_min | El valor mínimo de la FCF registrado en el histograma. |
| histogram_max | El valor máximo de la FCF registrado en el histograma. |
| histogram_number_of_peaks | El número de picos en la distribución del histograma. |
| histogram_number_of_zeroes | El número de “ceros” o bins con frecuencia cero en el histograma. |
| histogram_mode | El valor de FCF que aparece con mayor frecuencia (la moda estadística). |
| histogram_mean | El valor medio de la FCF en el histograma (la media estadística). |
| histogram_median | El valor central de la FCF en el histograma (la mediana estadística). |
| histogram_variance | La varianza de los valores de FCF, que mide su dispersión alrededor de la media. |
| histogram_tendency | Indica la simetría o sesgo del histograma. Puede interpretarse como: 1 para tendencia a la derecha (positiva), -1 para tendencia a la izquierda (negativa) y 0 para una distribución simétrica. |
Aproxima una relación lineal \(\hat{y} = \beta_0 + \sum_j \beta_j x_j\)minimizando MSE.
Usamos una variable continua de CTG como respuesta (p. ej., histogram_width) para ilustrar ajuste y residuales.
Discusión: supuestos (linealidad, homocedasticidad, independencia), diagnóstico con residuales.
Modela \(P(Y=1 \mid \mathbf{x}) = \sigma(\beta_0 + \mathbf{x}^\top \beta)\) con sigmoide \(\sigma(z)=1/(1+e^{-z})\).
La Regresión Logística es un algoritmo de aprendizaje automático supervisado utilizado fundamentalmente para problemas de clasificación binaria.
A pesar de su nombre, su objetivo no es predecir un valor continuo, sino modelar la probabilidad (\(P\)) de que una observación pertenezca a una clase específica (usualmente denotada como \(Y=1\)).
El modelo toma variables de entrada (features) \(x_1, \dots, x_n\) y estima \(P(Y=1 | \mathbf{x})\).
El modelo logístico opera en dos pasos cruciales:
Primero, el modelo calcula una suma ponderada de las entradas, exactamente igual que en una regresión lineal. A este resultado (\(z\)) se le conoce como logit o, más formalmente, log-odds.
\[ z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_n x_n \]
Dado que una probabilidad debe estar en el rango \([0, 1]\), \(z\) no puede ser el resultado final. La regresión logística aplica la función sigmoide (\(\sigma\)) a \(z\) para “aplastar” (squash) la salida lineal al rango de probabilidad.
\[ P = \sigma(z) = \frac{1}{1 + e^{-z}} \]
El concepto central que conecta el modelo lineal con la probabilidad es el log-odds. Esta transformación es necesaria para mapear un espacio acotado \([0, 1]\) a un espacio no acotado \([-\infty, +\infty]\).
La transformación se realiza en dos pasos:
El modelo de regresión logística es, por tanto, un modelo lineal que predice el log-odds:
\[ z = \ln\left(\frac{P}{1-P}\right) = \beta_0 + \beta_1 x_1 + \dots + \beta_n x_n \]
Para obtener la probabilidad \(P\) a partir del log-odds \(z\), simplemente revertimos la transformación Logit. Este proceso de despejar \(P\) de la ecuación del logit da origen a la función sigmoide:
Ecuación base: \[ z = \ln\left(\frac{P}{1-P}\right) \]
Aplicar exponencial (inversa del logaritmo): \[ e^z = \frac{P}{1-P} \]
Despejar \(P\): \[ e^z (1-P) = P \] \[ e^z - e^z P = P \] \[ e^z = P + e^z P \] \[ e^z = P (1 + e^z) \]
Probabilidad \(P\) en función de \(z\): \[ P = \frac{e^z}{1 + e^z} \]
Forma sigmoide alternativa (dividiendo numerador y denominador por \(e^z\)): \[ P = \frac{e^z/e^z}{(1 + e^z)/e^z} = \frac{1}{e^{-z} + 1} = \frac{1}{1 + e^{-z}} \]
Debido a esta relación, los coeficientes (\(\beta_i\)) del modelo tienen una interpretación específica:
precision recall f1-score support
0 0.778 0.745 0.761 94
1 0.929 0.940 0.934 332
accuracy 0.897 426
macro avg 0.853 0.842 0.848 426
weighted avg 0.895 0.897 0.896 426
El problema de regresión estándar busca encontrar una función \(f\) que mapee entradas \(\mathbf{x}\) a una salida \(y\).
En la Regresión Lineal, asumimos que la relación es lineal:
\[ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_n x_n + \epsilon \] O en forma vectorial: \[ y = \mathbf{w}^T \mathbf{x} + b \]
¿Qué pasa si la salida no es lineal o no sigue una distribución normal? (Ej. clasificación binaria).
Usamos un Modelo Lineal Generalizado (GLM), como la Regresión Logística:
Predictor Lineal (\(z\)): Mantenemos el núcleo lineal. \[ z = \mathbf{w}^T \mathbf{x} + b \] El resultado \(z\) (el logit) puede ir de \((-\infty, +\infty)\).
Función de Enlace (Inversa): Aplicamos una transformación no-lineal \(g^{-1}\) para mapear \(z\) al rango deseado (ej. \([0, 1]\) para probabilidad). \[ \hat{y} = g^{-1}(z) = \sigma(z) = \frac{1}{1 + e^{-z}} \]
Una neurona artificial (o Perceptrón) es conceptualmente idéntica a un modelo de regresión logística (un GLM).
Agregación Lineal: Calcula el predictor lineal \(z\) (la entrada neta). \[ z = \sum_{i=1}^n w_i x_i + b \]
Función de Activación: Aplica una transformación no-lineal \(a\) (la salida). \[ a = g(z) \]
¿Cómo modelar relaciones altamente complejas que una sola neurona no puede capturar?
Respuesta: Apilando las neuronas en capas.
La salida de una capa de “unidades de regresión” se convierte en la entrada de la siguiente capa.
\[ \text{Capa 1 (Oculta): } \mathbf{a}^{(1)} = g_1(\mathbf{W}^{(1)}\mathbf{x} + \mathbf{b}^{(1)}) \] \[ \text{Capa 2 (Salida): } \hat{y} = g_2(\mathbf{W}^{(2)}\mathbf{a}^{(1)} + \mathbf{b}^{(2)}) \]
Esto es una composición de funciones anidada:
\[ \hat{y} = g_2\left( \mathbf{W}^{(2)} \left( g_1(\mathbf{W}^{(1)}\mathbf{x} + \mathbf{b}^{(1)}) \right) + \mathbf{b}^{(2)} \right) \]
Esta arquitectura de “regresiones apiladas” tiene una propiedad fundamental:
Teorema de Aproximación Universal: Una red neuronal feedforward con una sola capa oculta (con una función de activación no lineal, como ReLU o Sigmoide) puede aproximar cualquier función continua \(f(\mathbf{x})\) a un grado arbitrario de precisión, dado un número suficiente de neuronas.
La red neuronal es un regresor generalizado en el sentido más amplio.
El proceso de “entrenamiento” también es una generalización de la regresión.
Regresión (Lineal/Logística)
Red Neuronal
La red neuronal es la generalización última de la regresión: un sistema que aprende la forma de la función desde los datos.
Arquitectura propuesta: 21→32→16→3 con ReLU y softmax para 3 clases \((1,2,3)\).
<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay object at 0x7f4e493aba10>
Macro-F1: 0.8003850715462932
Notas didácticas: desequilibrio de clases (SMOTE), métricas por clase (F1), validación cruzada, early stopping.
fetal_health
1.0 1655
2.0 295
3.0 176
Name: count, dtype: int64
count ... max
baseline value 2126.0 ... 160.000
accelerations 2126.0 ... 0.019
fetal_movement 2126.0 ... 0.481
uterine_contractions 2126.0 ... 0.015
light_decelerations 2126.0 ... 0.015
severe_decelerations 2126.0 ... 0.001
prolongued_decelerations 2126.0 ... 0.005
abnormal_short_term_variability 2126.0 ... 87.000
mean_value_of_short_term_variability 2126.0 ... 7.000
percentage_of_time_with_abnormal_long_term_vari... 2126.0 ... 91.000
mean_value_of_long_term_variability 2126.0 ... 50.700
histogram_width 2126.0 ... 180.000
histogram_min 2126.0 ... 159.000
histogram_max 2126.0 ... 238.000
histogram_number_of_peaks 2126.0 ... 18.000
histogram_number_of_zeroes 2126.0 ... 10.000
histogram_mode 2126.0 ... 187.000
histogram_mean 2126.0 ... 182.000
histogram_median 2126.0 ... 186.000
histogram_variance 2126.0 ... 269.000
histogram_tendency 2126.0 ... 1.000
fetal_health 2126.0 ... 3.000
[22 rows x 8 columns]